package com.dingding.manager.modules.system.dao;

import java.util.List;

import com.dingding.manager.common.beans.sys.CityRefOrganization;
import com.dingding.manager.common.beans.sys.Organization;
import com.dingding.manager.common.dao.Page;
import com.dingding.manager.modules.system.dto.organization.ReqOrganizationListDTO;
import com.dingding.manager.modules.system.dto.organization.ResOrganizationDTO;

/**
 * 
* @ClassName: OrganizationDao 
* @Description: 机构管理dao
* @author SUNZHICHENG 
* @date 2016年12月4日 上午11:55:24 
* @version V2.6.2
 */
public interface OrganizationDao {
	
	
	/**
	 * @Description: 根据id查询机构信息       
	 * @date 2016年12月4日 下午6:59:41
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public ResOrganizationDTO getOrganizationById(Integer id); 
	
	
	/**
	 * @Description: 获取所有机构       
	 * @date 2016年12月5日 下午3:19:22
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public List<Organization> getOrganizationList();
	
	/**
	 * @Description:删除机构信息       
	 * @date 2016年12月5日 下午7:12:20
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public boolean deleteOrganization(Integer id);
	
	/** 
	 * @Description: 启用、禁用        
	 * @date 2016年12月5日 下午7:13:52
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public boolean modifyOrganizationState(Integer id,Integer state);
	
	/**
	 * @Description: 根据公司类型获取公司列表
	 * @param organizationType
	 * @date 2016年12月6日 上午11:32:47
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public List<Organization> getOrganizationListByType(Integer organizationType);

	
	/**
	 * @Description:获取公司列表（或组合查询）       
	 * @date 2016年12月6日 下午8:02:57
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public Page<ResOrganizationDTO> getOrganizationList(ReqOrganizationListDTO reqOrganizationListDTO,Integer start, Integer length);

	/**
	 * @Description: 根据省份、城市获取机构     
	 * @date 2016年12月7日 下午8:17:47
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public List<ResOrganizationDTO> getOrganization(Integer proviceId,Integer sysCityId);

	
	/**
	 * @Description: 添加机构
	 * @date 2016年12月8日 下午9:32:51
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public boolean addOrganization(Organization organization);
	
	/**
	 * @Description: 添加城市机构管理关系
	 * @date 2016年12月8日 下午9:40:14
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public boolean addCityRefOrganization(CityRefOrganization cityRefOrganization);
	
	/**
	 * @Description: 根据机构名称获取机构信息
	 * @date 2016年12月8日 下午9:55:20
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public List<Organization> getOrganizationByName(String name);
	
	
	/**
	 * 
	 * @Title: getOrganizationByDriverId 
	 * @Description: 根据用户id查询用户的机构
	 * @param driverId
	 * @param @return  参数说明 
	 * @return Organization    返回类型 
	 * @throws
	 */
	public Organization getOrganizationByUserId(Integer userId);
	
	/**
	 * @Description: 根据省份、城市获取机构     
	 * @date 2016年12月7日 下午8:17:47
	 * @author hufan 
	 * @since V2.6.2
	 */
	public List<Integer> getOrganizationIds(Integer proviceId,Integer sysCityId);
	
	/**
	 * @Description: 根据id获取机构（机构添加）
	 * @date 2016年12月9日 下午2:48:51
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public Organization getOrganizationInfo(Integer organizationId);
	
	/**
	 * @Description:根据机构id获取城市机构关联信息 
	 * @date 2016年12月9日 下午3:09:40
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public CityRefOrganization getCityRefOrganization(Integer organizationId);
	 
	
}
